/***************EVENT LOOP***************/
/*
    1.JS单线程 逐行执行
    2.stack ：存放同步代码   WebAPIS:异步事件（ajax、setTimeout...）  queue：存放异步回调
    stack栈中为空后才会去执行queue里面的异步回调
    queue里面又分为宏任务队列（setTimeout、setInterval）以及微任务队列（promise..）
    存在多个宏任务的, 然而每一次 loop 的时候只会并且先执行"最前面"的宏任务, 然后执行当前 loop 下所有的微任务, 所有微任务完毕之后, 进入下一次 loop, 执行接下来的宏任务, 重复上述过程

*/

/*tips1*/
console.log("script start");
setTimeout(function () {
  console.log("setTime1 start");
  t2();
  console.log("setTime1 end");
}, 1000);
function t2() {
  setTimeout(() => {
    console.log("setTime2 starts");
  }, 0);
}
console.log("script end");

// 输出结果：script start
//          script end
//          setTime1 start
//          setTime1 end
//          setTime2 starts
